package org.bim.view.drag.design.exception;

/**
 * 基础异常 -需要实现的接口,判断code是否在规定的范围内
 * 用于封装公共的调用方法
 */
public interface CommonException {
    // 业务code
    int BIZ_CODE = 10000;
    // 系统code
    int SYS_CODE = 5000;
    // 用户code
    int USER_CODE = 4000;
    // 第三方系统
    int THIRD = 30000;
    // 普通错误
    int DEFAULT = 1;
    // 难以承受错误
    int FAILED = -1;
    // 未授权
    int UNAUTHORIZED = 401;
    // 权限不足
    int PERMISSION_DENY = 403;

    /**
     * 检测 code是否 在异常对应的错误码区间内。若返回false,则会使用 {@link #getDefaultCode()}内容对错误码code进行替换。
     * 若不希望替换，可以集成此方法，并返回true即可。请和 {@link #getDefaultCode()}配合使用
     *
     * @return 返回是否满足
     */
    default boolean checkCode(int code) {
        return true;
    }

    /**
     * 获取当前异常类默认的错误码。当 {@link #checkCode(int)}返回false时，会使用此返回内容对错误码code进行替换。请和
     * {@link #checkCode(int)}配合使用
     *
     * @return
     */
    int getDefaultCode();

    int getCode();

    String getMsg();
}
